home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 50
/
Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso
/
Aminet
/
text
/
edit
/
tecoc-146.lha
/
exelbr.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-07-05
|
1KB
|
64 lines
/*****************************************************************************
ExeLBr()
This function executes a left-bracket ([) command.
[q Q-register push
*****************************************************************************/
#include "zport.h" /* define portability identifiers */
#include "tecoc.h" /* define general identifiers */
#include "defext.h" /* define external global variables */
#include "deferr.h" /* define identifiers for error messages */
DEFAULT ExeLBr() /* execute [ command */
{
QRptr TmpQRp;
ptrdiff_t TmpSiz;
#if DEBUGGING
static char *DbgFNm = "ExeLBr";
sprintf(DbgSBf, "QStTop = %d", QStTop);
DbgFEn(1,DbgFNm,DbgSBf);
#endif
if (IncCBP() == FAILURE) {
DBGFEX(1,DbgFNm,"IncCBP() FAILURE");
return FAILURE;
}
if (FindQR() == FAILURE) {
DBGFEX(1,DbgFNm,"FindQR() FAILURE");
return FAILURE;
}
if (++QStTop >= QRS_SIZE) {
ErrMsg(ERR_PDO); /* push-down list overflow */
DBGFEX(1,DbgFNm,"ERR_PDO FAILURE");
return FAILURE;
}
/*
* Copy QR to top of QStack
*/
TmpQRp = QR;
QR = &QStack[QStTop];
TmpSiz = TmpQRp->End_P1 - TmpQRp->Start;
if (TmpSiz > 0) {
if (MakRom((SIZE_T)TmpSiz) == FAILURE) {
QR = TmpQRp;
--QStTop;
DBGFEX(1,DbgFNm,"MakRom() FAILURE");
return FAILURE;
}
MEMMOVE(QR->Start, TmpQRp->Start, (SIZE_T) TmpSiz);
QR->End_P1 = QR->Start + TmpSiz;
}
QR->Number = TmpQRp->Number;
QR = TmpQRp;
DBGFEX(1,DbgFNm,"SUCCESS");
return SUCCESS;
}